# demo05_re.py  python操作正则表达式
import re
# \d: 表示匹配一个数字 0 1 2 3 4 5 6 7 8 9
# {}: 表示匹配的内容连续出现的次数
# \d{3}: 表示匹配到的数字，数字的字符连续出现3次  123   12a

# 1. re.match(正则表达式, 目标字符串):
# 尝试用正则表达式模式从字符串的 开头匹配，如果匹配成功，则返回一个匹配对象；
# 否则返回 None
# 判断目标字符串是不是以连续3个数字开头
result = re.match("\d{3}", "123abc456def")
print(result)  # <_sre.SRE_Match object; span=(0, 3), match='123'>
print(result.group())  # 获取匹配的字符串内容 123
# 2. re.search(正则表达式, 目标字符串)
# 在字符串中查找正则表达式模式的第一次出现，如果匹配成功，则返回一个匹配对象；
# 否则返回 None
result = re.search("\d{3}", "abc123def456qwer789")
print(result)
print(result.group())  # 获取匹配的字符串内容 123
# 3. re.findall(正则表达式, 目标字符串)
# 在字符串中查找正则表达式模式的所有出现；返回一个匹配对象的列表
result = re.findall("\d{3}", "abc123def456qwer")
print(result)  # ['123', '456']
# 4. re.finditer(正则表达式, 目标字符串)
# 查找字符串中所有匹配字符
result = re.finditer("\d{3}", "abc123def456qwer")
for item in result:
    print(item.group())
# 5. re.split(正则表达式, 目标字符串)
# 根据正则表达式中的分隔符把字符分割为一个列表，并返回成功匹配的列表
str01 = "hello-world.tar"
result = re.split("-|\.", str01)
print(result)  # ['hello', 'world', 'tar']
# 6. re.sub(正则表达式, 替换内容, 目标字符串):
# 把字符串中所有匹配正则表达式的地方替换成新的字符串
result=re.sub("\d{3}", "nfx", "hello 123, Nice to meet you, 456")
print(result)  # hello nfx, Nice to meet you, nfx
# 7. re.complie(字符串)
# 对正则表达式模式进行编译，返回一个正则表达式对象
pattern = re.compile("\d{3}")  # pattern: 正则
result = pattern.search("abc456qwer789")
print(result.group())  # 456
result = pattern.search("asdf876qwer123")
print(result.group())  # 876





